### 项目四 无源蜂鸣器播放音乐

1.项目介绍

本实验用无源蜂鸣器播放音乐，无源蜂鸣器是通过PWM脉冲宽度调制脉冲进而调节音调，PWM比较多用于调节LED灯的亮度或者调节无源蜂鸣器的频率，或者是电机的转动速度，电机带动的车轮速度也就能很容易控制了，在玩一些Arduino机器人时，更能体现PWM的好处。

音乐除了要“唱的准”，还要“节奏对”，每一个音符的持续时间，就是节拍啦。我们可以用延时多少来设置节拍的，例如：1拍，1秒即1000毫秒；1/2拍，0.5秒即500毫秒；1/4拍，0.25秒即250毫秒；1/8拍，0.125秒即125毫秒….，我们可以试一试组合不同的音调和节拍，看看会有什么不同的效果。

2. 模块相关资料

![](./media/image-20250723094355382.png)

- 工作电压：3.3-5V（DC）
- 电流：50MA
- 工作温度：-10摄氏度 到 +50摄氏度
- 尺寸：31.6mmx23.7mm
- 接口：3PIN接口
- 输入信号：数字信号（方波）

3.实验组件

| 控制板 * 1                               | 扩展板 * 1                               | USB线 * 1                                | 无源蜂鸣器模块                           | 3P 转杜邦线母*1                          |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| ![](./media/image-20250722171949593.png) | ![](./media/image-20250722171957582.png) | ![](./media/image-20250722172006370.png) | ![](./media/image-20250723094635009.png) | ![](./media/image-20250722172025792.png) |

4.模块接线图

![](./media/image-20250723094657886.png)

5.实验程序一 

通过拖动代码块来编写代码程序，操作步骤如下：

先点击左下角的![](./media/image-20250723094913975.png)添加无源蜂鸣器代码块

![](./media/image-20250723095539325.png)

在**事件栏**拖出Arduino启动模块

![](./media/image-20250723095623115.png)

在**控制栏**拖出重复执行模块和等待时间模块

![](./media/image-20250723095635183.png)

![](./media/image-20250723095641929.png)

寻找无源蜂鸣器代码块

![](./media/image-20250723095656626.png)

完整的代码如下

![](./media/image-20250723095710614.png)**

6.实验程序

完整代码如下：

![](./media/image-20250723095822556.png)

7.实验结果

程序一：上传代码到开发板，蜂鸣器就发出do re mi fa so la si do的声音。

程序二：上传程序到开发板，就会听到无源蜂鸣器先播放“圣诞歌”接着播放“欢乐颂”和“生日快乐”歌曲；

8.代码说明

在音乐中有两个重要的因素：音调和节拍，表示无源蜂鸣器信号端是接在D3，管脚设置为3，播放音调为NOTE_C4的声音，节拍为1/4拍。音调是由英文和数字组成的音名，选择不同的音名就能改变不同的音调啦。1（Do）、2(Re)、3(Mi)、4(Fa)、5(Sol)、6(La)、7(Si)是音乐当中的唱名，就对应了音调下拉选项中NOTE_C、NOTE_D、NOTE_E、NOTE_F、NOTE_G.

![](./media/image-20250723095910075.png)

| 1（Do） | 2（Re） | 3(Mi)  | 4(Fa)  | 5(Sol) | 6(La)  | 7(Si)  |
| ------- | ------- | ------ | ------ | ------ | ------ | ------ |
| NOTE_C  | NOTE_D  | NOTE_E | NOTE_F | NOTE_G | NOTE_A | NOTE_B |

比如

从NOTE_C到NOTE_B，音调是越来越高的；同时把音调改成字母相同时，数字越大，音调越高。

音乐除了要“唱的准”，还要“节奏对”，每一个音符的持续时间，就是节拍，数字越大，持续的时间越长。这里的1拍表示持续时间是1000毫秒，1/2拍表示持续时间是500毫秒，3/4拍表示持续时间是750毫秒，1/4拍表示持续时间是250毫秒，依次类推。

![](./media/image-20250723100253943.png)

![](./media/image-20250723100302547.png)

